package com.itheima.controller;

import com.itheima.pojo.Dept;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import com.itheima.service.EmpService;
import com.itheima.service.impl.DeptServiceImpl;
import com.sun.java.accessibility.util.EventID;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 部门管理Controller
 */
@RestController
@RequestMapping("/depts")
@Slf4j
public class DeptController {

    //依赖注入
    @Autowired
    private DeptService deptService;


    //查询部门管理列表
    @GetMapping
    public Result list(HttpServletRequest request , HttpServletResponse response) throws IOException {
        //日志输出
        log.info("部门管理列表");

        String token = request.getHeader("token");
        log.info("jwt--------：{}",token);
      

        //不能出现多次响应数据（即多个响应体），因为下面已经有一次响应的数据了，所以会报错
//        response.getWriter().write("hello");
        //但是可以修改响应头里面的数据,也可以在响应头里添加数据返回
        response.addCookie(new Cookie("hello","gun-ni-ge-lao-wu-gui"));

        log.info("");
        //调应用层，获取数据
        List<Dept> list = deptService.list();
        //统一返回结果
       return Result.success(list);
    }

    //删除部门
    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable Integer id) throws IOException {
        //日志
        log.info("根据id删除部门:{}", id );
        //调用应用层,无返回值
        deptService.deleteById(id);

        //统一返回结果
        return Result.success();
    }

    //添加部门
    @PostMapping
    public Result insert(@RequestBody Dept dept){
        //记录日志
        log.info("添加部门：{}",dept);
        //调用应用层,无返回值
        deptService.insert(dept);
        //统一返回结果
        return Result.success();
    }

    //修改信息,先查询，再修改
    @GetMapping("/{id}")
    public Result selectById(@PathVariable Integer id){
        //日志
        log.info("id查询部门：{}",id);
        //调应用层
       Dept dept = deptService.selectById(id);
        //统一返回结果
        return Result.success(dept);
    }

    @PutMapping
    public Result put(@RequestBody Dept dept){
        //日志
        log.info("修改部门信息：{}",dept);
        //调应用层,无返回值
        deptService.put(dept);
        //统一返回结果
        return Result.success();
    }
}
